﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using Event_Planner.Models;


namespace Event_Planner.DataAccess
{
    public class Usuarios
    {
        public EventPlannerContext db = new EventPlannerContext();

        public void EliminarUsuarioCompletamente(string NombreUsuario)
        {

            UsuariosModel Usuario = db.Usuarios.Find(NombreUsuario);
       
            EliminarContactosDelUsuario(Usuario);
  
            EliminarEventosDelUsuario(Usuario);
               
            EliminarOrganizadoresDelUsuario(Usuario);

            db.Usuarios.Remove(Usuario);

            db.SaveChanges();

        }



        public void EliminarContactosDelUsuario(UsuariosModel Usuario)
        {
            // Elimino todos los contactos asociados a este usuario.   
            if (Usuario != null)
            {
                if (Usuario.ContactosUsuario != null)
                {
                    foreach (ContactosModel Contacto in Usuario.ContactosUsuario.ToList())
                    {
                         foreach (EventoConfirmacion eventoConfirmacion in Contacto.EventosParticipantes.ToList())
                         {
                            db.Contactos.Find(Contacto.ID).EventosParticipantes.Remove(eventoConfirmacion);
                            db.Eventos.Find(eventoConfirmacion.Evento.ID).ParticipantesEvento.Remove(eventoConfirmacion);
                         }
                    db.Contactos.Remove(db.Contactos.Find(Contacto.ID));
                    }
                }
            }
        }
        

          public void EliminarEventosDelUsuario(UsuariosModel Usuario)
          {
            if (Usuario != null)
            {
                foreach (EventosModels Evento in Usuario.EventosCreados.ToList())
                    db.Eventos.Remove(db.Eventos.Find(Evento.ID));
            }

          }


          public void EliminarOrganizadoresDelUsuario(UsuariosModel Usuario)
          {
             foreach (OrganizadoresModel Organizador in Usuario.OrganizadoresUsuario.ToList())
                db.Organizadores.Remove(db.Organizadores.Find(Organizador.ID));
          }

        }

}